package com.grumoon.volleydemo.fragment;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.json.JSONArray;
import org.json.JSONObject;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.SimpleAdapter;

import com.android.volley.Response.ErrorListener;
import com.android.volley.Response.Listener;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.grumoon.volleydemo.R;
import com.grumoon.volleydemo.util.Constants;
import com.grumoon.volleydemo.util.StringUtil;
import com.grumoon.volleydemo.util.ToastUtil;
import com.grumoon.volleydemo.util.VolleyUtil;

/**
 * 
 ***************************************************** 
 * <hr>
 * <dt><span class="strong">类功能简介:</span></dt>
 * <dd>Coffee</dd>
 * <dt><span class="strong">创建时间:</span></dt>
 * <dd>2015-3-19 下午2:46:15</dd>
 * <dt><span class="strong">公司:</span></dt>
 * <dd>Json请求</dd>
 * 
 * @author aa1000777 - Email:aa1000777@qq.com
 ***************************************************** 
 */
public class JsonRequestFragment extends Fragment {
	public static final int INDEX = 12;

	private ListView lvCar;
	private static final int[] ids = { R.id.tv_car_name, R.id.tv_car_level, R.id.tv_car_price };
	private static final String[] keys = { "name", "level", "price" };
	private List<Map<String, String>> carDataList;

	private SimpleAdapter adapter;

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
		View view = inflater.inflate(R.layout.fr_json_request, container, false);
		carDataList = new ArrayList<Map<String, String>>();
		lvCar = (ListView) view.findViewById(R.id.lv_car);
		adapter = new SimpleAdapter(getActivity(), carDataList, R.layout.fr_json_request_list_item, keys, ids);
		lvCar.setAdapter(adapter);
		// 发起请求
		JsonObjectRequest request = new JsonObjectRequest(StringUtil.preUrl(Constants.DEFAULT_JSON_REQUEST_URL), null, new Listener<JSONObject>() {
			@Override
			public void onResponse(JSONObject response) {
				try {
					if (!response.has("result")) {
						return;
					}
					JSONObject result = response.getJSONObject("result");
					if (!result.has("fctlist")) {
						return;
					}
					JSONArray factoryArray = result.getJSONArray("fctlist");
					if (factoryArray.length() == 0) {
						return;
					}
					JSONObject factory = factoryArray.getJSONObject(0);
					if (!factory.has("serieslist")) {
						return;
					}
					JSONArray seriesArray = factory.getJSONArray("serieslist");
					carDataList.clear();
					for (int i = 0; i < seriesArray.length(); i++) {
						JSONObject series = seriesArray.getJSONObject(i);
						Map<String, String> seriesMap = new HashMap<String, String>();
						seriesMap.put("name", series.getString("name"));
						seriesMap.put("level", "级别：" + series.getString("levelname"));
						seriesMap.put("price", "价格：" + series.getString("price"));
						carDataList.add(seriesMap);
					}
					adapter.notifyDataSetChanged();
				} catch (Exception e) {
					ToastUtil.showToast(getActivity(), getResources().getString(R.string.request_fail_text));
				}
			}
		}, new ErrorListener() {
			@Override
			public void onErrorResponse(VolleyError arg0) {
				ToastUtil.showToast(getActivity(), getResources().getString(R.string.request_fail_text));
			}
		});
		// 请求加上Tag,用于取消请求
		request.setTag(this);
		VolleyUtil.getQueue(getActivity()).add(request);
		return view;
	}

	@Override
	public void onDestroyView() {
		VolleyUtil.getQueue(getActivity()).cancelAll(this);
		super.onDestroyView();
	}

}
